package com.tjbank.cssys.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;


import com.tjbank.cssys.web.config.GetUserCodeFromToken;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.tjbank.cssys.framework.base.api.BaseController;
import com.tjbank.cssys.framework.base.api.Response;
import com.tjbank.cssys.api.RelationAddService;
import com.tjbank.cssys.api.RoleService;
import com.tjbank.cssys.dto.RoleDTO;
import com.tjbank.cssys.dto.RoleRelationDTO;

import java.util.Date;
import java.util.UUID;

/**
 * 角色
 * <p>
 * Package : com.tansun.magicube.iam.web.controller
 *
 * @author -- lijiangtao 2020年5月7日 下午3:24:03
 */
@RestController
public class RoleController extends BaseController {

    @Autowired
    private RoleService roleService;

    @Autowired
    private RelationAddService relationAddService;

    private static final Logger logger = LoggerFactory.getLogger(RoleController.class);

    /**
     * 新增
     *
     * @param roleDTO
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:13:33
     */
    @PostMapping("/role")
    public Response<?> addRole(@RequestBody @Valid RoleDTO roleDTO, HttpServletRequest request) {


        return this.success(roleService.addRole(roleDTO));
    }

    /**
     * 授权
     *
     * @param roleDTO
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:13:33
     */
    @PostMapping("/role/authorization")
    public Response<?> addRole(@RequestBody RoleRelationDTO roleRelationDTO, HttpServletRequest request) {
        relationAddService.addRP(roleRelationDTO);
        return this.success();
    }

    /**
     * 根据角色ID查询
     *
     * @param roleId
     * @return
     * @author -- lijiangtao 2020年6月11日 下午4:56:06
     */
    @GetMapping("/role/{roleId}")
    public Response<?> queryPermissionByRoleId(@PathVariable String roleId, HttpServletRequest request) {

        return this.success(roleService.queryRole(roleId));
    }

    /**
     * 分页查询角色信息
     *
     * @param roleDTO
     * @param pageable
     * @return
     * @author -- lijiangtao 2020年7月27日 下午3:55:35
     */
    @GetMapping("/role")
    public Response<?> listToTree(RoleDTO roleDTO, Pageable pageable, HttpServletRequest request) {

        return this.success(roleService.queryRole(roleDTO, pageable));
    }

    /**
     * 删除
     *
     * @param id
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:13:44
     */
    @DeleteMapping("/role/{id}")
    public Response<?> deleteRole(@PathVariable String id, HttpServletRequest request) {

        return this.success(roleService.deleteRole(id));
    }

    /**
     * 更新
     *
     * @param roleDTO
     * @return
     * @author -- lijiangtao 2020年5月9日 下午4:13:50
     */
    @PutMapping("/role")
    public Response<?> updateRole(@RequestBody @Valid RoleDTO roleDTO, HttpServletRequest request) {

        return this.success(roleService.updateRole(roleDTO));
    }

}
